import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/*
使用TCP网络编程完成用户登录功能：客户端输入用户名和密码，向服务器发出登录请求；
服务器接收数据并进行判断，如果用户名和密码均是admin，则登录成功，否则登录失败，返回相应响应信息；
客户端接收响应信息并输出登录结果。

1)用户User类已提供构造方法 public User(String username,String password)。

2)客户端采用ObjectOutputStream发送封装了用户名和密码的User对象。

3)服务器端和客户端的类名和方法声明如下所示。
public class LoginServer {
	public static void main(String[] args) throws Exception {}
}

public class LoginClient {
	public static void main(String[] args) throws Exception {}
}
 */
public class LoginServer {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //接收
        //- 创建服务端的socket对象(ServerSocket对象)
        ServerSocket serverSocket = new ServerSocket(8888);
        // - 通过accept方法建立连接,得到socket对象
        Socket accept = serverSocket.accept();
        // - 从socket中获取输入输出流
        InputStream in = accept.getInputStream();
        //采用ObjectInputStream接收封装了用户名和密码的User对象
        ObjectInputStream objectInputStream = new ObjectInputStream(in);
        User user = (User) objectInputStream.readObject();
        System.out.println(user.toString());
     /*   // - close
        objectInputStream.close();*/
        // - 进行读写操作
        byte[] bytes = new byte[1024];
        int readCount = in.read(bytes);

        //判断数据
        String s = new String(bytes, 0, readCount);
        System.out.println(s);
        String[] strings = s.split(" ");
        String replyMsg = "";
        if (strings[0].equals(user.username) && strings[1].equals(user.password)) {
            replyMsg = "登录成功！";
        } else {
            replyMsg = "信息错误，登录失败！";
        }

        //发送
        OutputStream out = accept.getOutputStream();
        // - 利用输入输出流进行读写操作
        out.write(replyMsg.getBytes());
        // - close
        serverSocket.close();
    }
}
